package com.itheima.dubbo.interfaces;

import com.itheima.commons.pojo.mongo.Publish;

import java.util.List;

/**
 * @author yaohu
 * @date 2021/12/7
 * @Version 1.0
 * @describe
 */
public interface PublishApi {

    /**
     * 发布朋友圈
     * mongodb => qunazi_publish
     *
     * @param publish
     */
    void publish(Publish publish);

    /**
     * 分页查询好友圈子
     *
     * @param page
     * @param pagesize
     * @param userId
     * @return
     */
    List<Publish> findFriendMovements(Integer page, Integer pagesize, Long userId);

    /**
     * 随机抽取一定数量的圈子动态
     *
     * @param pagesize 固定数量
     * @return 随机圈子动态集合
     */
    List<Publish> randomMovements(Integer pagesize);

    /**
     * 根据pids查询圈子信息
     *
     * @param publishIdList
     * @return
     */
    List<Publish> findMovementsByPids(List<Long> publishIdList);

    /**
     * 根据publishId查询圈子
     *
     * @param publishId
     * @return
     */
    Publish queryPublishById(String publishId);

    /**
     * 分页查询用户发布的圈子信息
     *
     * @param userId 用户ID
     * @param page
     * @param pageSize
     * @return
     */
    List<Publish> findMovementsByUserId(Long userId, Integer page, Integer pageSize);


    /**
     * 查询publishInfo中没有的publish信息
     * @param publishIds
     * @return
     */
    List<Publish> findOthers(List<String> publishIds);

    /**
     * 获取最新存储的publish 主要是为了获取publishId 以便存储publishInfo
     *
     * @param userId
     * @return
     */
    Publish queryCurrentPublishByUserId(Long userId);
}
